package com.shioirikukuri.mapper;

import com.shioirikukuri.entity.Category;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface CategoryMapper {

	/**
	 * 查询所有分类信息
	 *
	 * @return 分类列表
	 */
	@Select("SELECT * FROM categories")
	List<Category> selectAllCategories();

	/**
	 * 根据ID查询分类信息
	 *
	 * @param id 分类ID
	 * @return 匹配的分类对象
	 */
	@Select("SELECT * FROM categories WHERE id = #{id}")
	Category selectCategoryById(@Param("id") Long id);

	/**
	 * 插入新的分类信息
	 *
	 * @param category 新分类的信息
	 */
	@Insert("INSERT INTO categories(name, description) VALUES(#{name}, #{description})")
	@Options(useGeneratedKeys = true, keyProperty = "id") // 自动获取插入记录的主键值
	void insertCategory(Category category);

	/**
	 * 更新已有分类的信息
	 *
	 * @param category 需要更新的分类信息
	 */
	@Update("UPDATE categories SET name=#{name}, description=#{description} WHERE id=#{id}")
	void updateCategory(Category category);

	/**
	 * 删除指定ID的分类
	 *
	 * @param id 分类ID
	 */
	@Delete("DELETE FROM categories WHERE id = #{id}")
	void deleteCategoryById(@Param("id") Long id);
}